/*************************************************************************
  > File Name: 6_get_pi.c
  > Author: IvanLxy
  > Mail: yoyiyyo@163.com 
  > Created Time: Wed 01 Apr 2020 03:12:41 PM CST
************************************************************************/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

double get_pi(int n)
{
	int k = 0;
	int i;
	double x;
	double y;
	srand(time(NULL));
    //srand()函数原型：void srand (usigned int seed);用来设置rand()产生随机数时的随机数种子。
    //参数seed是整数，通常可以利用time(0)或geypid(0)的返回值作为seed
    
    /*****************************************
    * 如要产生[m,n]范围内的随机数num，可用：
    * int num=rand()%(n-m+1)+m;
    *其中的rand()%(n-m+1)+m算是一个公式。
    *******************************************************
    *比如产生10~30的随机整数：
    *srand(time(0));
    *int a = rand() % (21)+10
    ********************************************/
	for (i = 0; i < n; i++)
	{
        //RAND_MAX是C语言标准库 <stdlib.h> 中定义的一个宏:随机数生成函数 rand 所能返回的最大数值
        //rand()函数用来产生随机数,rand()会返回一个范围在0到RAND_MAX（32767）之间的伪随机数（整数）
		x = (double)rand() / RAND_MAX;
		y = (double)rand() / RAND_MAX;
		if (x * x + y * y <= 1.0)
		{
			k++;
		}
	}

	return 4.0 * k / n;
}

 
int main()
{
	printf("%lf\n", get_pi(100));
	printf("%lf\n", get_pi(10000));
	printf("%lf\n", get_pi(1000000));
	printf("%lf\n", get_pi(100000000));
	
	return 0;
}
